Java概述
- 发展简史:Sun–>Oracle,Java1.0–>…Java1.4–>Java5.0(重大更新)…–>Java9.0
- 技术分支:JavaSE(基础)、JavaEE(企业应用、Web开发)、JavaME(嵌入式、安卓)
- 语言特点:简单性、面向对象、分布式、健壮性、安全性、体系结构中立、可移植、解释型、高性能、多线程、动态性
- 运行机制:HelloWorld.java–>javac.exe编译–>HelloWorld.class(与平台无关的字节码,二进制)–>java.exe解释执行(jvm)–>特定平台机器码
1
2
3
4
5public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Java开发环境搭建
- JDK:Java Development Kit,Java开发工具包,面向开发人员,包括了Java运行环境JRE、Java工具和Java基础类库
JRE:Java Runtime Environment,Java运行时环境,面向用户,包含JVM标准实现及Java核心类库
JVM:Java Virtual Machine,Java虚拟机,是整个java实现跨平台的最核心的部分,.class文件交由JVM解释执行 - 从Oracle官网下载JDK,进行环境变量配置:计算机–>属性–>高级系统设置–>环境变量,最后javac验证
JAVA_HOME:新建系统变量,指JDK的安装路径,如D:\JDK
Path:计算机存在Path变量,指命令搜索路径,如%JAVA_HOME%\bin
CLASSPATH(Java5.0后无需配置):新建系统变量,指类搜索路径,如.;D:\JDK\lib - 常用DOS命令:cd,cd..,md,rd,dir,cls,del等
注释、标识符、关键字
注释:注释不会出现在可执行程序中,Java有三种标记注释的方式
1
2
3// 单行注释
/* 多行注释 */
//* 文档注释 */标识符:Java中的包、类、方法、参数和变量名字,可由大小写字母、数字、下划线和美元符号组成,但不能以数字开头,不能使用Java中的保留关键字
表示类名的标识符用大写字母开头:HelloWorld 驼峰命名法
表示方法和变量的标识符用小写字母开头,后面的描述性词以大写开始:eat(),eatFood()- 关键字
数据类型
常量 & 变量
1
2
3
4
5
6
7
8
9
10
11
12public class Variable {
/*关键字final定义常量(const是java保留关键字),final type VAR_NAME = value;
常量赋值之后不能更改,常量名一般全部大写
如果希望常量在一个类中的多个方法中使用,使用static final VAR_NAME设置成类常量*/
final double CM_PER_INCH = 2.54;
/*Java属于强类型语言,变量必须先声明才能使用,type varName = value;
变量名必须是合法标识符;大小写敏感,长度无限制;
变量类型可以是基本数据类型,也可以是引用类型;*/
String a = "Java";
//可以在一行声明多个变量,不提倡!!逐一声明提高可读性
double b = 20.0;double c = 10.0;
}数据类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30public class TestDataType {
public static void main(String[] args) {
byte a = 11; //byte 1字节,8位,-128~127
byte a1 = 011; //数字前面加0表示8进制数
byte a2 = 0x11; //数字前面加0X/0x表示16进制数
short b = 150; //short 2字节,16位,-2^15~2^15-1
int c = 250; //int 4字节,32位,-2^31~2^31-1
long d = 9999; //8字节,63位,-2^63~2^63-1
System.out.println(Integer.toBinaryString(a)); //将a转换为2进制数
System.out.println(Integer.toOctalString(a)); //将a转换为8进制数
System.out.println(Integer.toHexString(a)); //将a转换为16进制数
float e = 3.14F; //单精度类型,4字节,尾数精确到7位有效数字,浮点数默认double,加F/f转换为float
//double f = 6.82; 数值精度是float类型的两倍,双精度类型,8字节,默认double型
double f = 6.28e2; //科学计数法写法,e2,E2,e-2
//浮点数存在舍入误差,很多数字无法精确表示,精确无舍入误差计算,使用BigDecimal类
float f1 = 0.1F;
double f2 = 1/10;
System.out.println(f1==f2); //false,避免比较中使用浮点数
char h = '陈'; //2个字节,单引号用来表示字符常量,双引号表示字符串:"陈"
int h1 = h + 2;
char h2 = '\''; //用转义字符输出特殊字符
System.out.println(h);
System.out.println(h1);
System.out.println(h2);
//布尔boolean型:未精确定义字节,true/false,用于判断逻辑条件;不能用0或非0代替
}
}数据转换
容量小–>容量大 自动 容量不是指字节,而是表述范围1
2
运算符
- 1122
流程控制
条件语句
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40public class TestIf01 {
public static void main(String[] args) {
double i = 100 * Math.random();
int score = (int) i;
if (score > 90) {
System.out.println("优秀");
}
if (score > 60 && score <= 90) {
System.out.println("良好");
}
if (score < 60) {
System.out.println("不合格");
}
System.out.println("你的分数为:" + score + "分");
double r = 10 * Math.random();
double area = Math.PI * Math.pow(r, 2);
double circle = 2 * Math.PI * r;
System.out.println("半径为: " + r);
System.out.println("面积为: " + area);
System.out.println("周长为: " + circle);
if(area >= circle) {
System.out.println("面积大于等于周长");
} else {
System.out.println("周长大于面积");
}
int age = (int) (100 * Math.random());
System.out.print("年龄是" + age + ", 属于");
if (age < 18) {
System.out.println("未成年");
} else if (age < 60) {
System.out.println("中年");
} else if (age < 85) {
System.out.println("老年");
} else {
System.out.println("寿星");
}
}
}循环语句
1
2
数组
- 数组:数组是一种数据结构,用来存储同一类型值的集合;通过一个整型下标可以访问数组中的每一个值。
- 数组定义:
- 数组的初始化:动态、静态、默认
- 二维 & 多维数组
- 数组的引用传递
方法
定义:类似于函数,实现特定功能从来被反复调用的代码片段
1
2
3{修饰符1 修饰符2} 返回值类型 方法名(类型 参数1,类型 参数2...) {
语句;
}重载:一个类中存在同名但参数不同的多个方法,调用方法时会根据参数/参数个数/参数顺序同调用不同的方法
1
2递归